In a typical multi-server environment, there are a plurality of request servers that receive work requests from requestors, such as client computers, and place those requests on a common queue. Then, a plurality of worker servers take the work requests off the queue, process the requests and return responses to the queue. Thereafter, the request servers that initially received the requests take their respective responses from the queue and return the responses to the original requestors.
If a request server fails and there are still pending requests for the request server, then a message is sent to the one or more requestors of those pending requests indicating that the requests are aborted. However, the worker servers may continue to process the requests and return responses to the queue. Then, if the request server restarts, either the request server will mistake old responses for new responses, and thus, give incorrect responses to new requests, or old responses will be left indefinitely on the queue, eventually clogging the queue.